iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 2
5
自我挑戰組

開發雜記系列 第 2

cs檔分身術:partial class

  • 分享至 

  • xImage
  •  

前言

當專案一大,動則幾千行的source code 是家常便飯。就算搭配 #region 使用,還是很難管理。即使將公共的lib拆出去,也無法避免公共層過大。經學長推薦,筆者研讀lidgren原始碼,才了解C# 有一個特殊的用法partial可以協助Prgrammer採分檔案。

使用方法

只需要在class前面加上partial 關鍵字即可。而當加上該關鍵字以後的class name就可以分別存於不同cs檔,如下:

//filename : test.cs
namespace IThome
{
    public partial class test
    {
    }
}
//filename : test.handle.cs
namespace IThome
{
    public partial class test
    {
    }
}

如上,系統組譯的時候會將兩個檔案合併起來。事實上,在專案中,系統已經將兩個檔案視為同一個類別。也許很多人會問。為什麼要將檔案分開?用提供網路服務的類別來說明,如果您的類別提供upload、download的服務,upload佔用了500行,download佔用了600行。全部混合在同一個檔案中,不易閱讀;如果拆成兩個檔案network.upload.csnetwork.download.cs則從功能上很容易區分,方便維護。要查code的時候很方便就可以取得對應的位置。

缺點

並非每個方案都是完美無瑕的,如果將這個方法運用在winform開發上,其實也可以,但是其他細分出去的cs檔無法順利從方案總管double-click開啟。必須右鍵-->檢視原始碼才可以順利開啟。(筆者都選檔案直接按F7)這或許是這個功能最不方便的地方吧。

小結

筆者認為,若您的物件具備很明顯的功能區隔且代碼很長(1000行以上),如果無法抽像化成數個類別,那麼使用partial或許是一個不錯的解決方案。若source code 在1000行以內,進行這類型的拆分,除非有特殊需求,否則筆者還是不建議這樣做。

參考資料

lidgren:
Github
Google Code


上一篇
切割DEBUG版本
下一篇
為甚麼要宣告static
系列文
開發雜記4
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言